diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 1fa4f95..8db6161 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -804,7 +804,7 @@
 	/**
 	 * Object to Array
 	 *
-	 * Takes an object as input and convers the class variables to array key/vals
+	 * Takes an object as input and converts the class variables to array key/vals
 	 *
 	 * @access	public
 	 * @param	object
diff --git a/system/database/DB_cache.php b/system/database/DB_cache.php
index aee5ce6..b469b0e 100644
--- a/system/database/DB_cache.php
+++ b/system/database/DB_cache.php
@@ -82,7 +82,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Retreive a cached query
+	 * Retrieve a cached query
 	 *
 	 * The URI being requested will become the name of the cache sub-folder.
 	 * An MD5 hash of the SQL statement will become the cache file name
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index a24bd20..8a7b88f 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -368,7 +368,7 @@
 
 	/**
 	 * Simple Query  
-	 * This is a simiplified version of the query() function.  Internally
+	 * This is a simplified version of the query() function.  Internally
 	 * we only use it when running transaction commands since they do
 	 * not require all the features of the main query() function.
 	 * 
@@ -535,7 +535,7 @@
 	 * Calculate the aggregate query elapsed time 
 	 * 
 	 * @access	public
-	 * @param	intiger	The number of decimal places
+	 * @param	integer	The number of decimal places
 	 * @return	integer		 
 	 */	
 	function elapsed_time($decimals = 6)
@@ -1021,7 +1021,7 @@
 	 * @param	string	the error message
 	 * @param	string	any "swap" values
 	 * @param	boolean	whether to localize the message
-	 * @return	string	sends the application/errror_db.php template		 
+	 * @return	string	sends the application/error_db.php template		 
 	 */	
 	function display_error($error = '', $swap = '', $native = FALSE) 
 	{
diff --git a/system/database/DB_result.php b/system/database/DB_result.php
index 4e8c4fc..d02bfb9 100644
--- a/system/database/DB_result.php
+++ b/system/database/DB_result.php
@@ -63,7 +63,7 @@
 			return $this->result_object;
 		}
 		
-		if ($this->num_rows == 0)
+		if ($this->numerous == 0)
 		{
 			return array();
 		}
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index cb2f48d..4dc8792 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -277,7 +277,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * List columnn query
+	 * List column query
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 253627c..20311ff 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -311,7 +311,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Show columnn query
+	 * Show column query
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 4fd9f3a..ea2adbe 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -303,7 +303,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Show columnn query
+	 * Show column query
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 794405a..4f5470c 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -418,7 +418,7 @@
     // --------------------------------------------------------------------
 
     /**
-     * Show columnn query
+     * Show column query
      *
      * Generates a platform-specific query string so that the column names can be fetched
      *
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 4bd6e11..17a6dfb 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -278,7 +278,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Show columnn query
+	 * Show column query
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 340d650..f74e652 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -305,7 +305,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Show columnn query
+	 * Show column query
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index 9da50b6..fd9fd2c 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -297,7 +297,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Show columnn query
+	 * Show column query
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php
index 03519e6..9118624 100644
--- a/system/helpers/date_helper.php
+++ b/system/helpers/date_helper.php
@@ -507,7 +507,7 @@
  * Timezones
  *
  * Returns an array of timezones.  This is a helper function
- * for varios other ones in this library
+ * for various other ones in this library
  *
  * @access	public
  * @param	string	timezone
diff --git a/system/helpers/file_helper.php b/system/helpers/file_helper.php
index 635ef1b..7a04324 100644
--- a/system/helpers/file_helper.php
+++ b/system/helpers/file_helper.php
@@ -73,7 +73,7 @@
  * Write File
  *
  * Writes data to the file specified in the path. 
- * Creats a new file if non-existant.
+ * Creates a new file if non-existent.
  *
  * @access	public
  * @param	string	path to file
@@ -102,7 +102,7 @@
  *
  * Deletes all files contained in the supplied directory path.
  * Files must be writable or owned by the system in order to be deleted.
- * If the second parameter is set to TRUE, any direcotries contained
+ * If the second parameter is set to TRUE, any directories contained
  * within the supplied base directory will be nuked as well.
  *
  * @access	public
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index 3fd3610..e12d893 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -204,7 +204,7 @@
 // ------------------------------------------------------------------------
 
 /**
- * Dropdown Menu
+ * Drop-down Menu
  *
  * @access	public
  * @param	string
@@ -348,7 +348,7 @@
  *
  * @access	private
  * @param	array
- * @parm	array
+ * @param	array
  * @return	string
  */	
 function parse_form_attributes($attributes, $default)
diff --git a/system/helpers/security_helper.php b/system/helpers/security_helper.php
index 347cab4..34386ff 100644
--- a/system/helpers/security_helper.php
+++ b/system/helpers/security_helper.php
@@ -31,8 +31,8 @@
  * XSS Filtering
  *
  * @access	public
- * @parm	string
- * @parm	string	the character set of your data
+ * @param	string
+ * @param	string	the character set of your data
  * @return	string
  */	
 function xss_clean($str, $charset = 'ISO-8859-1')
@@ -84,7 +84,7 @@
  * Strip Image Tags
  *
  * @access	public
- * @parm	string
+ * @param	string
  * @return	string
  */	
 function strip_image_tags($str)
@@ -101,7 +101,7 @@
  * Convert PHP tags to entities
  *
  * @access	public
- * @parm	string
+ * @param	string
  * @return	string
  */	
 function encode_php_tags($str)
diff --git a/system/helpers/typography_helper.php b/system/helpers/typography_helper.php
index ba68048..fe9e3bb 100644
--- a/system/helpers/typography_helper.php
+++ b/system/helpers/typography_helper.php
@@ -65,7 +65,7 @@
  * 
  *
  * @access	public
- * @parm	string
+ * @param	string
  * @return	string
  */
 function auto_typography($str)
@@ -125,7 +125,7 @@
 		$str = preg_replace("/\n\n+/", "\n\n", $str);
 
 		/*
-		 * Convert quotes within tags to tempoarary marker
+		 * Convert quotes within tags to temporary marker
 		 *
 		 * We don't want quotes converted within 
 		 * tags so we'll temporarily convert them to 
@@ -156,7 +156,7 @@
 		$str = preg_replace("#(</.*?)(".$this->block_elements.")(.*?>)#", "\\1\\2\\3<p>", $str);
 	
 		/*
-		 * Convert "ignore" tags to tempoarary marker
+		 * Convert "ignore" tags to temporary marker
 		 *
 		 * The parser splits out the string at every tag
 		 * it encounters.  Certain inline tags, like image 
diff --git a/system/helpers/user_agent_helper.php b/system/helpers/user_agent_helper.php
deleted file mode 100644
index 3c6085e..0000000
--- a/system/helpers/user_agent_helper.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
-/**
- * Code Igniter
- *
- * An open source application development framework for PHP 4.3.2 or newer
- *
- * @package		CodeIgniter
- * @author		Rick Ellis
- * @copyright	Copyright (c) 2006, pMachine, Inc.
- * @license		http://www.codeignitor.com/user_guide/license.html 
- * @link		http://www.codeigniter.com
- * @since		Version 1.0
- * @filesource
- */
- 
-// ------------------------------------------------------------------------
-
-/**
- * Code Igniter User Agent Helper
- *
- * @package		CodeIgniter
- * @subpackage	Helpers
- * @category	Helpers
- * @author		Rick Ellis
- * @link		http://www.codeigniter.com/user_guide/helpers/array_helper.html
- */
-
-// ------------------------------------------------------------------------
-
-/**
- * Get the OS of the user currently browsing the site
- *
- * @access	public
- * @return	string
- */	
-function get_OS()
-{
-	if ( ! isset($_SERVER['HTTP_USER_AGENT'])) 
-	{
-		return 'Unknown OS';
-	}
-	
-	$os = array (
-					'windows nt 6.0'	=> 'Windows Longhorn',
-					'windows nt 5.2'	=> 'Windows 2003',
-					'windows nt 5.0'	=> 'Windows 2000',
-					'windows nt 5.1'	=> 'Windows XP',
-					'windows nt 4.0'	=> 'Windows NT 4.0',
-					'winnt4.0'			=> 'Windows NT 4.0',
-					'winnt 4.0'			=> 'Windows NT',
-					'winnt'				=> 'Windows NT',
-					'windows 98'		=> 'Windows 98',
-					'win98'				=> 'Windows 98',
-					'windows 95'		=> 'Windows 95',
-					'win95'				=> 'Windows 95',
-					'windows'			=> 'Unknown Windows OS',
-					'mac os x'			=> 'Mac OS X',
-					'freebsd'			=> 'FreeBSD',
-					'ppc'				=> 'Macintosh',
-					'sunos'				=> 'Sun Solaris',
-					'linux'				=> 'Linux',
-					'debian'			=> 'Debian',
-					'beos'				=> 'BeOS',
-					'apachebench'		=> 'ApacheBench',
-					'aix'				=> 'AIX',
-					'irix'				=> 'Irix',
-					'osf'				=> 'DEC OSF',
-					'hp-ux'				=> 'HP-UX',
-					'netbsd'			=> 'NetBSD',
-					'bsdi'				=> 'BSDi',
-					'openbsd'			=> 'OpenBSD',
-					'gnu'				=> 'GNU/Linux',
-					'unix'				=> 'Unknown Unix OS'
-				);
-	
-	
-	foreach ($os as $key => $val) 
-	{
-		if (preg_match("|$key|i", $_SERVER['HTTP_USER_AGENT'])) 
-		{
-			return $val;
-		}
-	}
-
-	return 'Unknown OS';
-}
-
-
-?>
\ No newline at end of file
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 048934b..52e99b5 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -250,7 +250,7 @@
 	 * month provided.
 	 *
 	 * @access	public
-	 * @parm	integer	the month
+	 * @param	integer	the month
 	 * @return	string
 	 */
 	function get_month_name($month)
